import Vue from "vue";

/**
 * 注册全局组件
 * 实际上是 webpack 的方法,vue 工程一般基于 webpack,所以可以使用
   require.context(directory,useSubdirectories,regExp)
   接收三个参数:
        directory：说明需要检索的目录
        useSubdirectories：是否检索子目录
        regExp: 匹配文件的正则表达式,一般是文件名
 */
const contexts = require.context("./components/global", false, /\.vue$/);
contexts.keys().forEach(component => {
  const componentEntity = contexts(component).default;
  // 使用内置的组件名称 进行全局组件注册
  Vue.component(componentEntity.name, componentEntity);
});

/**
 * 注册全局组件
 */
const requireComponent = require.context("./components", true, /[a-z0-9]+\.(vue)$/i);
requireComponent.keys().forEach(fileName => {
  const componentConfig = requireComponent(fileName);
  let componentName = fileName.replace(/^\.\//, "").replace(/\.\w+$/, "");
  if (componentName.indexOf("/") > -1) {
    if (/\/index$/.test(componentName)) {
      componentName = componentName.replace(/\/index$/, "");
    } else {
      return;
    }
  }
  // console.log(componentName)
  Vue.component(componentName, componentConfig.default || componentConfig);
});
